﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BlueCMS.Core.Data.Query.Conditions
{
    public interface IStartNode
    {
        IStartNode StartGroup();

        ILHSNode Aggregate(string clause);
        ILHSNode Column(string name);
        ILHSNode Constant(object value);
        ILHSNode Parameter(object value);
        ILHSNode Parameter(object value, string name);
        ILHSNode SubSelect(Action<SelectQuery> subquery);

        IEndNode Exists(Action<SelectQuery> subquery);
        IEndNode NotExists(Action<SelectQuery> subquery);

        //IConditionNode Condition(object nameOrExpression, MultiOperators op, params object[] namesOrExpressions);
        //IConditionNode Condition(object nameOrExpressionLHS, BinaryOperators op, object nameOrExpressionRHS);
        //IConditionNode Condition(object nameOrExpression, UnaryOperators op);
    }
}
